<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // Promise的使用
        // 1.Promise是一个构造函数，使用时需创建他的实例化对象。后面的参数是一个回调函数
        // 2.将异步代码放到回调函数中。意：Promise在申明构造函数的时候是同步执行的，Promise只是用来处理异步的
        // 3.Promise的回调函数中有两个参数：resolve函数和reject函数，分别代表成功和失败两种状态
            //  — 调用resolve函数：把pending状态改成成功
            //  — 调用reject函数：把pending状态改成失败
            //  — 只能由pending状态转换成成功或失败状态（成功和失败不能相互转换）
        // 4.resolve函数和reject函数的调用，只能改变Promise的状态，不会中断回调函数的运行
        // 5.resolve函数和reject函数都只接受一个参数，这个参数是成功或失败的信息，将会放在Promise的实例对象的某个属性中



        let p1 = new Promise((resolve, reject) => {

            console.log("获取A的数据......");

            setTimeout(() => {
                console.log("A的数据获取成功");

                // resolve({
                //     name: "liuMin",
                //     age: 31
                // })

                reject("error:未知错误！")

                console.log("回调函数内部代码");

            }, 3000)

        })

        console.log("p1", p1); //打印Promise的实例化对象P1
    </script>
</body>

</html>